// solver_bfs.h: Header file for SolverBFS class.
// Written by Victor Luna Freire - victorclf@live.com
// Copyright (c) Victor Luna Freire. All rights reserved.
// Monday, October 26, 2009 12:28:02 AM

/*
#ifndef SOLVER_BFS_H_219018293129
#define SOLVER_BFS_H_219018293129

#include "maze.h"
#include <queue>

// TODO: finish SolverBFS
class SolverBFS : public Maze {

	std::vector<Vec2i> parents; // each vertex parent, used to form the path in the end
	
	std::priority_queue<std::pair<int, Vec2i>, 
		std::vector<std::pair<int, Vec2i>>, 
		std::greater<std::pair<int, Vec2i>> > adj_cells; // priority queue for BFS

	// Start solving. Must be private: The processed maze is altered therefore it is impossible to start solving again.
	void start_process();
	
public:
	SolverBFS(const std::vector<std::string>& maze_to_solve) 
		: Maze(((maze_to_solve[0].size() - 1) / 2), ((maze_to_solve.size() - 1) / 2)),
		  parents(h, std::vector<Vec2i>(w, Vec2i(-1, -1))) 
		  { maze = maze_to_solve; };
	
	// Perform next step in the solution. Returns false if the maze is solved. Starts solving if it was not started before.
	bool next_step();
	// Finish solving, process all steps. Returns false if the maze is solved.
	bool all_steps();

	// TODO: function to get the solution found!

	// Is the maze solved?
	bool is_done() const;
};

#endif // SOLVER_BFS_H_219018293129
*/